package com.dcy.daily.common.core.base;

import com.dcy.daily.common.core.page.PageDomain;
import com.dcy.daily.common.core.page.TableSupport;
import com.dcy.daily.common.utils.SqlUtil;
import com.dcy.daily.common.utils.StringUtils;
import com.github.pagehelper.PageHelper;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * @author duanchunyu
 * @version 1.0.0
 * @createTime 2021年11月03日 16:12
 */
public class BaseService {
    protected final Logger logger = LoggerFactory.getLogger(BaseService.class);
    /** 当前记录起始索引 */
    private final static Integer defaultNum = 1;
    /** 每页显示记录数 */
    private final static Integer defaultSize = 10;

    /**
     * 设置请求分页数据
     * countFlag 统计操作标识
     */
    protected void startPage(Boolean countFlag)
    {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageNum = pageDomain.getPageNum()==0 ? defaultNum : pageDomain.getPageNum();
        Integer pageSize = pageDomain.getPageSize()==0 ? defaultSize : pageDomain.getPageSize();
        if (StringUtils.isNotNull(pageNum) && StringUtils.isNotNull(pageSize))
        {
            String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
            PageHelper.startPage(pageNum, pageSize, orderBy).count(countFlag);
        }
    }

    /**
     * 自定义设置请求分页数据
     * num 自定义页数，使用默认条数
     * countFlag 统计操作标识
     */
    protected void startPage(Integer num,Boolean countFlag)
    {
        PageDomain pageDomain = TableSupport.buildPageRequest();
        Integer pageSize = StringUtils.isNull(pageDomain.getPageSize()) ? defaultSize : pageDomain.getPageSize();
        if (StringUtils.isNotNull(num))
        {
            String orderBy = SqlUtil.escapeOrderBySql(pageDomain.getOrderBy());
            PageHelper.startPage(num, pageSize, orderBy).count(countFlag);
        }
    }

    /**
     * 自定义设置请求分页数据
     * @param num 自定义页数
     * @param size 自定义获取条数
     *
     */
    protected void startPage(Integer num,Integer size,Boolean countFlag)
    {
        if (StringUtils.isNotNull(num) && StringUtils.isNotNull(size))
        {
            PageHelper.startPage(num, size).count(countFlag);
        }
    }
}
